GDB (GNU Debugger) একটি শক্তিশালী টুল যা প্রোগ্রামারদের C, C++, এবং Assembly Language প্রোগ্রাম ডিবাগ করার জন্য ব্যবহৃত হয়। GDB ব্যবহার করে Assembly Code ডিবাগিং করার মাধ্যমে প্রোগ্রামের কার্যপ্রবাহ, রেজিস্টার মান এবং মেমোরি স্টেট বিশ্লেষণ করা যায়।
প্রাথমিক প্রস্তুতি:
Assembly Code কম্পাইল করা: Assembly কোডকে ডিবাগ করার জন্য কম্পাইল করতে হবে -g
ফ্ল্যাগ ব্যবহার করে, যা ডিবাগিং ইনফরমেশন যুক্ত করে।
nasm -f elf64 -g program.asm -o program.o
ld program.o -o program
GDB শুরু করা: প্রোগ্রাম GDB দিয়ে চালানো।
gdb ./program
GDB কমান্ড:
প্রাথমিক কমান্ড:
start
: প্রোগ্রামের শুরু থেকে ডিবাগিং শুরু করার জন্য।
(gdb) start
layout asm
: Assembly কোডের লেআউট দেখতে।
(gdb) layout asm
break
বা b
: নির্দিষ্ট ঠিকানায় বা লেবেলে ব্রেকপয়েন্ট সেট করতে।
(gdb) break _start
নির্দেশনা পরীক্ষা ও চলাচল:
stepi
(বা si
): এক ধাপে এক নির্দেশনা কার্যকর করতে (Single-step execution)।
(gdb) stepi
nexti
(বা ni
): এক ধাপে এক নির্দেশনা কার্যকর করা, তবে কল করা সাবরুটিনে প্রবেশ না করে (Next instruction)।
(gdb) nexti
রেজিস্টার এবং মেমোরি বিশ্লেষণ:
info registers
: সমস্ত রেজিস্টারের বর্তমান মান দেখতে।
(gdb) info registers
x
: মেমোরি পরীক্ষা করতে (Examine memory)।
(gdb) x/16xb $esp
print
বা p
: নির্দিষ্ট রেজিস্টার বা ভেরিয়েবলের মান দেখতে।
(gdb) print $eax
section .data
msg db 'Hello, World!', 0
section .text
global _start
_start:
mov edx, 13 ; msg দৈর্ঘ্য
mov ecx, msg ; msg অ্যাড্রেস
mov ebx, 1 ; stdout
mov eax, 4 ; sys_write
int 0x80 ; সিস্টেম কল
mov eax, 1 ; sys_exit
xor ebx, ebx ; এক্সিট কোড 0
int 0x80 ; সিস্টেম কল
GDB কমান্ড উদাহরণ:
প্রোগ্রাম চালু করা:
(gdb) start
Assembly কোড দেখতে:
(gdb) layout asm
নির্দিষ্ট ব্রেকপয়েন্ট সেট করা:
(gdb) break _start
স্টেপ বাই স্টেপ ডিবাগিং:
(gdb) stepi
রেজিস্টার চেক করা:
(gdb) info registers
Assembly কোড পরীক্ষা:
রেজিস্টার ও মেমোরি বিশ্লেষণ:
কোড অপ্টিমাইজেশন:
সারসংক্ষেপ
GDB একটি শক্তিশালী টুল যা Assembly Language প্রোগ্রাম ডিবাগ করতে এবং কার্যপ্রণালী বিশ্লেষণ করতে সাহায্য করে। এটি রেজিস্টার এবং মেমোরি চেক করা, স্টেপ বাই স্টেপ নির্দেশনা কার্যকর করা, এবং ব্রেকপয়েন্ট ব্যবহার করে কোডের ত্রুটি নির্ণয় করতে পারে। GDB ব্যবহার করে Assembly Code Debugging প্রোগ্রামিংয়ে দক্ষতা বৃদ্ধিতে সহায়ক।
common.read_more